-- ================================================================================================
-- -- 定义一个普通函数
-- function f(a,b)
--     print(a,b) -- 输出 a 和 b
-- end

-- -- 测试：输入参数
-- print("无实参传递")
-- f()
-- print("传递一个实参")
-- f(10)
-- print("传递两个实参")
-- f(10,20)
-- print("传递三个实参")
-- f(10,20,30)
-- -- 测试结果：少则为 nil（类似其它语言的null空） 补充，多则舍弃

-- ================================================================================================

-- -- 定义一个普通的函数，包含可变参
-- function f(...)
--     local a,b,c,d=...
--     print(a,b,c,d)
--     print(...) -- 直接输入多少打印多少
-- end

-- -- 测试
-- -- print("传递三个实参")
-- -- f(1,2,3)
-- -- print("传递四个实参")
-- -- f(10,20,30,40)
-- print("传递五个实参") -- 依旧多则舍弃(赋值没用赋值)
-- f(10,20,30,40,50)

-- ================================================================================================

-- 定义一个普通函数，返回两个值
-- function f(a,b)
--     local sum = a + b
--     local mul = a * b
--     return sum,mul
-- end

-- -- 一次性接收两个值
-- sum,mul = f(10,20)
-- print(sum,mul)

-- ================================================================================================

-- 定义两个普通函数
function sum(a, b)
    return a + b
end

function mul(a, b)
    return a * b
end
-- 定义一个函数，其参数为另一个函数√
function f(m, n, fun)
    local result = fun(m, n)
    print(result)
end

-- 普通调用
f(3,5,sum);
f(3,5,mul);

-- 匿名函数作为参数传入 调用
f(10,20,function (a,b)
    return a - b
end)
-- ================================================================================================